package com.sanq.product.cab.locks;

/**
 * com.sanq.product.cab.locks.ILock
 *
 * @author sanq.Yan
 * @date 2020/2/20
 */
public interface ILock {

    /**
     * 得到Lock锁的key
     */
    String getLockKey(String key);

    /**
     * 返回唯一值
     * @return
     */
    String getLockValue();

    /**
     * 加锁
     */
    void lock(String key, String value);

    /**
     * 解锁
     */
    void unLock(String key, String value);

    /**
     * 另一种执行方式
     */
    void execute(String key,  ILockCallback callback);
}
